package com.geekgo.distributedlock.redissonlock;

import java.util.concurrent.TimeUnit;

/**
 * 分布式锁操作模板
 * @author geekgo
 * @version 2017/2/9 16:56
 */
public interface DistributedLockTemplate {

    /**
     * 使用分布式锁，使用锁默认超时时间
     * @param callback
     * @param <T>
     * @return
     */
    <T> T lock(DistributedLockCallback<T> callback);

    /**
     * 使用分布式锁，自定义锁超时时间
     * @param callback
     * @param leaseTime 锁超时时间，
     * @param timeUnit
     * @param <T>
     * @return
     */
    <T> T lock(DistributedLockCallback<T> callback, long leaseTime, TimeUnit timeUnit);

}
